package com.recSystem.Service;

import com.recSystem.Entity.DTO.RecommendFavoriteDTO;
import com.recSystem.Entity.DTO.RecommendSimilarDTO;

import java.util.List;

/**
 * 推荐服务
 *
 * @author Legolas_PRC
 * @date 2023/4/ 13:57
 **/
public interface RecommendService {
    /**
     * 根据收藏推荐
     * @param maxLength
     * @param offset
     * @param userId
     * @return
     */
    RecommendFavoriteDTO getRecommendByFavorite(int maxLength, int offset, int userId);

    /**
     * 根据作者推荐
     * @param maxLength
     * @param offset
     * @param author
     * @param userId
     * @return
     */
    RecommendFavoriteDTO getRecommendByAuthor(int maxLength, int offset, int author, int userId);

    /**
     * 推荐相似论文
     * @param paperId
     * @param userId
     * @return
     */
    RecommendSimilarDTO getSimilarPapers(int paperId, int userId);

    /**
     * 将论文集合按推荐的分数排序
     * @param papers
     * @param topK
     * @param userId
     * @return
     */
    List<Integer> sortByScore(List<Integer> papers, int topK, int userId);

}
